home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2002 November / SGI IRIX Base Documentation 2002 November.iso / usr / share / catman / p_man / cat3 / SCSL / slasd1.z / slasd1
Encoding:
Text File  |  2002-10-03  |  6.9 KB  |  199 lines

  1.  
  2.  
  3.  
  4. SSSSLLLLAAAASSSSDDDD1111((((3333SSSS))))                                                          SSSSLLLLAAAASSSSDDDD1111((((3333SSSS))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      SLASD1 - compute the SVD of an upper bidiagonal N-by-M matrix B,
  10.  
  11. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  12.      SUBROUTINE SLASD1( NL, NR, SQRE, D, ALPHA, BETA, U, LDU, VT, LDVT, IDXQ,
  13.                         IWORK, WORK, INFO )
  14.  
  15.          INTEGER        INFO, LDU, LDVT, NL, NR, SQRE
  16.  
  17.          REAL           ALPHA, BETA
  18.  
  19.          INTEGER        IDXQ( * ), IWORK( * )
  20.  
  21.          REAL           D( * ), U( LDU, * ), VT( LDVT, * ), WORK( * )
  22.  
  23. IIIIMMMMPPPPLLLLEEEEMMMMEEEENNNNTTTTAAAATTTTIIIIOOOONNNN
  24.      These routines are part of the SCSL Scientific Library and can be loaded
  25.      using either the -lscs or the -lscs_mp option.  The -lscs_mp option
  26.      directs the linker to use the multi-processor version of the library.
  27.  
  28.      When linking to SCSL with -lscs or -lscs_mp, the default integer size is
  29.      4 bytes (32 bits). Another version of SCSL is available in which integers
  30.      are 8 bytes (64 bits).  This version allows the user access to larger
  31.      memory sizes and helps when porting legacy Cray codes.  It can be loaded
  32.      by using the -lscs_i8 option or the -lscs_i8_mp option. A program may use
  33.      only one of the two versions; 4-byte integer and 8-byte integer library
  34.      calls cannot be mixed.
  35.  
  36. PPPPUUUURRRRPPPPOOOOSSSSEEEE
  37.      SLASD1 computes the SVD of an upper bidiagonal N-by-M matrix B, where N =
  38.      NL + NR + 1 and M = N + SQRE. SLASD1 is called from SLASD0.
  39.  
  40.      A related subroutine SLASD7 handles the case in which the singular values
  41.      (and the singular vectors in factored form) are desired.
  42.  
  43.      SLASD1 computes the SVD as follows:
  44.  
  45.                    ( D1(in)  0    0     0 )
  46.        B = U(in) * (   Z1'   a   Z2'    b ) * VT(in)
  47.                    (   0     0   D2(in) 0 )
  48.  
  49.          = U(out) * ( D(out) 0) * VT(out)
  50.  
  51.      where Z' = (Z1' a Z2' b) = u' VT', and u is a vector of dimension M with
  52.      ALPHA and BETA in the NL+1 and NL+2 th entries and zeros elsewhere; and
  53.      the entry b is empty if SQRE = 0.
  54.  
  55.      The left singular vectors of the original matrix are stored in U, and the
  56.      transpose of the right singular vectors are stored in VT, and the
  57.      singular values are in D.  The algorithm consists of three stages:
  58.  
  59.         The first stage consists of deflating the size of the problem
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. SSSSLLLLAAAASSSSDDDD1111((((3333SSSS))))                                                          SSSSLLLLAAAASSSSDDDD1111((((3333SSSS))))
  71.  
  72.  
  73.  
  74.         when there are multiple singular values or when there are zeros in
  75.         the Z vector.  For each such occurence the dimension of the
  76.         secular equation problem is reduced by one.  This stage is
  77.         performed by the routine SLASD2.
  78.  
  79.         The second stage consists of calculating the updated
  80.         singular values. This is done by finding the square roots of the
  81.         roots of the secular equation via the routine SLASD4 (as called
  82.         by SLASD3). This routine also calculates the singular vectors of
  83.         the current problem.
  84.  
  85.         The final stage consists of computing the updated singular vectors
  86.         directly using the updated singular values.  The singular vectors
  87.         for the current problem are multiplied with the singular vectors
  88.         from the overall problem.
  89.  
  90.  
  91. AAAARRRRGGGGUUUUMMMMEEEENNNNTTTTSSSS
  92.      NL     (input) INTEGER
  93.             The row dimension of the upper block.  NL >= 1.
  94.  
  95.      NR     (input) INTEGER
  96.             The row dimension of the lower block.  NR >= 1.
  97.  
  98.      SQRE   (input) INTEGER
  99.             = 0: the lower block is an NR-by-NR square matrix.
  100.             = 1: the lower block is an NR-by-(NR+1) rectangular matrix.
  101.  
  102.             The bidiagonal matrix has row dimension N = NL + NR + 1, and
  103.             column dimension M = N + SQRE.
  104.  
  105.      D      (input/output) REAL array,
  106.             dimension (N = NL+NR+1).  On entry D(1:NL,1:NL) contains the
  107.             singular values of the
  108.             upper block; and D(NL+2:N) contains the singular values of
  109.             the lower block. On exit D(1:N) contains the singular values of
  110.             the modified matrix.
  111.  
  112.      ALPHA  (input) REAL
  113.             Contains the diagonal element associated with the added row.
  114.  
  115.      BETA   (input) REAL
  116.             Contains the off-diagonal element associated with the added row.
  117.  
  118.      U      (input/output) REAL array, dimension(LDU,N)
  119.             On entry U(1:NL, 1:NL) contains the left singular vectors of
  120.             the upper block; U(NL+2:N, NL+2:N) contains the left singular
  121.             vectors of the lower block. On exit U contains the left singular
  122.             vectors of the bidiagonal matrix.
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. SSSSLLLLAAAASSSSDDDD1111((((3333SSSS))))                                                          SSSSLLLLAAAASSSSDDDD1111((((3333SSSS))))
  137.  
  138.  
  139.  
  140.      LDU    (input) INTEGER
  141.             The leading dimension of the array U.  LDU >= max( 1, N ).
  142.  
  143.      VT     (input/output) REAL array, dimension(LDVT,M)
  144.             where M = N + SQRE.  On entry VT(1:NL+1, 1:NL+1)' contains the
  145.             right singular
  146.             vectors of the upper block; VT(NL+2:M, NL+2:M)' contains the right
  147.             singular vectors of the lower block. On exit VT' contains the
  148.             right singular vectors of the bidiagonal matrix.
  149.  
  150.      LDVT   (input) INTEGER
  151.             The leading dimension of the array VT.  LDVT >= max( 1, M ).
  152.  
  153.      IDXQ  (output) INTEGER array, dimension(N)
  154.            This contains the permutation which will reintegrate the subproblem
  155.            just solved back into sorted order, i.e.  D( IDXQ( I = 1, N ) )
  156.            will be in ascending order.
  157.  
  158.      IWORK  (workspace) INTEGER array, dimension( 4 * N )
  159.  
  160.      WORK   (workspace) REAL array, dimension( 3*M**2 + 2*M )
  161.  
  162.      INFO   (output) INTEGER
  163.             = 0:  successful exit.
  164.             < 0:  if INFO = -i, the i-th argument had an illegal value.
  165.             > 0:  if INFO = 1, an singular value did not converge
  166.  
  167. FFFFUUUURRRRTTTTHHHHEEEERRRR DDDDEEEETTTTAAAAIIIILLLLSSSS
  168.      Based on contributions by
  169.         Ming Gu and Huan Ren, Computer Science Division, University of
  170.         California at Berkeley, USA
  171.  
  172.  
  173. SSSSEEEEEEEE AAAALLLLSSSSOOOO
  174.      INTRO_LAPACK(3S), INTRO_SCSL(3S)
  175.  
  176.      This man page is available only online.
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.